The invention generally relates networks and, more particularly, the invention relates to forwarding data across a computer network.
The Internet utilizes many data forwarding devices (e.g., routers and switches) to forward data messages between network nodes. Among other things, such forwarding devices include both routing software and a corresponding routing hardware platform that cooperate to forward data messages to their appropriate destinations. Undesirably, routing software within current forwarding devices generally is preconfigured for use within one specific routing hardware platform only. In particular, a forwarding device (e.g., a router) manufactured by a given vendor has routing software that is specifically configured for use with no routing hardware platform other than that of the given vendor. Accordingly, such routing software from one vendor cannot be used on another vendor""s forwarding device.
In accordance with one aspect of the invention, a routing device includes a routing application program interface that routing programs utilize to route data packets to other devices in a network. To that end, the routing device includes a processor for executing a routing program, a plurality of functional modules that control the operation of the routing device and forward data packets to the other network devices as specified by the routing program, and the routing application program interface operatively coupled with the processor. The routing program utilizes a set of specified commands associated with the routing application program interface for interacting with the plurality of functional modules through the routing application program interface. The routing program specifies a data packet routing protocol, while the functional modules comprise at least one of hardware and software.
In other embodiments, the routing application program interface controls the plurality of functional modules based upon commands received from the routing program. The routing program may include a set of programs, including programs specifying a specific routing protocol, and programs that manage and support the specific protocol. For example, the routing program may specify the Internet Protocol, and have a plurality of management and configuration programs that permit a network administrator to manage and configure the routing device.
The functional modules may include an operating system that cooperates with a system services module of the routing application program interface to provide operating system services. The routing application program interface also may include at least one control path module that controls communication between software programs executing on the routing device, and a management and configuration module that controls management and configuration processes on the routing device. Among other things, such software programs may include routing applications, terminating applications, and hardware driver applications. The routing application program interface preferably provides a standard interface to all the functional modules for all routing programs executing on the processor.
As noted above, the routing program may be any routing application. For example, the routing program may be a link level (wide area network level) or network level protocol. Among others, such protocols may be the asynchronous transfer mode (xe2x80x9cATMxe2x80x9d), or the Internet Protocol. The plurality of functional modules also may include a forwarding engine that operates in accord with instructions received from the routing application program interface. In preferred embodiments, the routing application program interface is a framework through which all routing programs must forward messages to communicate with the functional modules. The routing application program interface may include a plurality of API modules that each perform a specified function. Each API module has an associated set of commands that are utilized by the routing program to control each API module.
In accord with another aspect of the invention, an apparatus for routing data packets to network devices in a network also includes a routing application program interface that routing programs utilize to route data packets to other devices in a network. Specifically, the apparatus includes a routing platform that forwards the data packets to other network devices in the network. The routing platform includes a processor for executing at least one routing program. Data packets are forwarded to the other network devices by the routing platform as specified by the at least one routing program. The apparatus further includes the routing application program interface operatively coupled with the processor executing the at least one routing program. The routing application program interface provides the at least one routing program with a standard interface for communicating with the routing platform.
In preferred embodiments, the at least one routing program utilizes a set of specified commands associated with the routing application program interface for communicating with the routing platform. In preferred embodiments, all routing programs interact with the routing application program interface via the set of specified commands. Accordingly, no routing program forwards messages directly to the routing platform.
Another aspect of the invention similarly includes an apparatus for routing data packets to network devices in a network that also includes a routing application program interface that routing programs utilize to route data packets to other devices in a network. Specifically, the apparatus includes a routing platform that forwards data packets to network devices in the network. The platform includes a processor for executing a routing program, and the data packets are forwarded to the network devices in the manner specified by the routing program. The apparatus also includes the routing application program interface operatively coupled with the processor executing the routing program. The executing routing program utilizes a set of specified commands associated with the routing application program interface for communicating with the routing platform.
Preferred embodiments of the invention are implemented as a computer program product having a computer usable medium with computer readable program code thereon. The computer readable code may be read and utilized by the computer system in accordance with conventional processes.